package linter.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;
import linter.POJO.DO.Posts;
import linter.POJO.DTO.PostsDTO;
import linter.custom.ResultVO;

/**
* @author 北煜
* @description 针对表【posts(文章内容表)】的数据库操作Service
* @createDate 2024-03-17 02:50:34
*/
public interface PostsService extends IService<Posts> {

    /**
     * @author 北煜
     * @param pageNum 第几页
     * @param pageSize 每页展示几个
     * @param sortType 展示的类型是什么？ 1：推荐 2：根据收藏 3：根据点赞 4：根据浏览 5：根据评论
     * return 返回查询到的数据
     */
    PageInfo<PostsDTO> selectBySortType(Integer pageNum, Integer pageSize, Integer sortType);

    /**
     * @param title 文章标题
     * @param jsonContent 文章内容
     * @return 是否创建成功
     */
    String createPosts(String title, String jsonContent,Long uuid);

    /**
     * @param postsId 文章ID
     * @return 返回是否存在
     */
    Integer selPosts(Integer postsId);

    /**
     * @return 返回修改成功与否
     */
    boolean updateLikes(Integer postsId, Long uuid);

    /**
     * @param postsId 文章ID
     * @return 返回修改成功与否
     */
    boolean updateViews(Integer postsId);

    /**
     * @param postsId 待审核的文章ID
     * @param reviewedStatus 该文章的状态 0:未审核 1:审核通过 2:审核未通过
     * @return 审核状态
     */
    ResultVO<String> reviewedPost(Integer postsId, Integer reviewedStatus);

    /**
     * @return 返回数量
     */
    ResultVO<PageInfo<PostsDTO>> getReviewedPosts();

    /**
     * @param pageNum 当前页
     * @param pageSize 每页数量
     * @return 返回数量
     */
    Posts selectPostsNotReviewed(Integer postsId);

    /**
     * @param postsId 文章ID
     * @return 返回修改成功与否
     */
    boolean updateLike(Integer postsId);

    /**
     * @param postsId 文章ID
     * @return 文章
     */
    Posts getBlogByPostsId(Integer postsId);

    /**
     * @param postsDTO 文章类属性
     * @param uuid 用户ID
     * @return 返回查到的值
     */
    Object selectPosts(PostsDTO postsDTO, Long uuid);

    /**
     *
     * @param id
     * @return 是否成功通过
     */
    ResultVO<String> passPosts(int id);
    /**
     *
     * @param id
     * @return 是否成功不通过
     */
    ResultVO<String> failPosts(int id);
}
